#include <xen/config.h>
#include <xen/delay.h>
+#include <xen/time.h>
#include <asm/msr.h>
#include <asm/processor.h>
void __udelay(unsigned long usecs)
{
- unsigned long ticks = usecs * ticks_per_usec;
+ unsigned long ticks = usecs * (cpu_khz / 1000);
unsigned long s, e;
rdtscl(s);
#include <asm/mc146818rtc.h>
/* GLOBAL */
-unsigned long cpu_khz; /* Detected as we calibrate the TSC */
-unsigned long ticks_per_usec; /* TSC ticks per microsecond. */
+unsigned long cpu_khz; /* CPU clock frequency in kHz. */
spinlock_t rtc_lock = SPIN_LOCK_UNLOCKED;
int timer_ack = 0;
unsigned long volatile jiffies;
if ( !ticks_per_frac )
panic("Error calibrating TSC\n");
- ticks_per_usec = ticks_per_frac / (1000000/CALIBRATE_FRAC);
cpu_khz = ticks_per_frac / (1000/CALIBRATE_FRAC);
cpu_freq = (u64)ticks_per_frac * (u64)CALIBRATE_FRAC;
* Delay routines calling functions in arch/i386/lib/delay.c
*/
-extern unsigned long ticks_per_usec;
extern void __udelay(unsigned long usecs);
#define udelay(n) __udelay(n)